import createPersistedState from "vuex-persistedstate"; // 数据持久化
import Cookies from "js-cookie";
import createLogger from "vuex/dist/logger"; // logger 插件会生成状态快照，所以仅在开发环境使用
const debug = process.env.NODE_ENV !== "production";
const plugins = [];
debug && plugins.push(createLogger());
// 默认 缓存全部数据
// plugins.push(createPersistedState());

// 缓存 指定模块
// plugins.push(createPersistedState({ paths: ["abc", "render"] }));

// 缓存指定存储方式
// plugins.push(createPersistedState({ storage: window.sessionStorage }));
// plugins.push(createPersistedState({ storage: window.localStorage }));

// 缓存到 cookie
// plugins.push(
//   createPersistedState({
//     storage: {
//       getItem: key => Cookies.get(key),
//       setItem: (key, value) => Cookies.set(key, value, { expires: 7 }),
//       removeItem: key => Cookies.remove(key)
//     }
//   })
// );

// 缓存某个模块里的字段
plugins.push(
	createPersistedState({
		// paths:['abc.num'], // 缓存模块单个数据可以这样 ，多个最好用下面方法
		// val 是所有模块
		reducer(val) {
			console.log(val);
			return {
				// 缓存abc模块的num数据
				abc: {
					num: val.abc.num,
				},
				// 缓存 主模块里的数据
				test: val.test,
			};
		},
	})
);

// 缓存 多个
// plugins.push(createPersistedState({ storage: window.sessionStorage }));
// plugins.push(createPersistedState({ storage: window.localStorage }));
export default plugins;
